import { ColDef, ICellRendererParams } from '@ag-grid-community/core'

/** columnDefs 配置项 */
export type TCol<T extends keyof IPublishRouteListItem = keyof IPublishRouteListItem> = ColDef<
  IPublishRouteListItem,
  IPublishRouteListItem[T]
> & { field: T }

/** cellRendererParams */
export type TCellParams<T extends keyof IPublishRouteListItem = keyof IPublishRouteListItem> = ICellRendererParams<
  IPublishRouteListItem,
  IPublishRouteListItem[T]
>

/** 发布路由列表请求入参 */
export interface IPublishRouteListReq {
  /** 运单号 */
  waybillNo: string
  /** 物流状态 0.待发货 1.报关中 2.运输中 3.清关中 4.中转中 5.派送中 6.已签收 */
  logisticsStatus: number
}

/** 发布路由列表项 */
export interface IPublishRouteListItem {
  /** 发布路由ID */
  publishId: number
  /** 路由模板ID */
  routeId: number
  /** 运单号 */
  waybillNo: string

  /** 路由编号 */
  routeNo: string | null
  /** 路由节点 0.国内仓 1.起运港拖车 2.起运港 3.干线运输 4.目的港 5.目的港拖车 6.海外仓 7.尾程派送 8.目的地 */
  routeNode: number | null
  /** 路由 */
  routeTitle: string | null
  /** 路由类型 1.正常 2.异常 */
  routeType: number | null
  /** 发生时间 */
  occurDate: string | null
  /** 持续时间 小时 */
  keepDate: string | null
  /** 附件 */
  fileList: Array<{ fileName: string; fileUrl: string }> | null
  /** 编辑时的附件 */
  draftFileList?: Array<{ fileName: string; fileUrl: File }> | null
  /** 发布状态 0.待发布 1.已发布 */
  publishStatus: number | null
  /** 划线标记展示 0.不划线 1.划线 */
  markFlag: number | null
}

/** 校验结果项 */
export interface IPublishRouteCheckResultItem {
  attrKey: string
  attrValue: string
  type: 'dynamic_field' | 'address' | 'date'
}
